package scala

object Demo9Class {
  def main(args: Array[String]): Unit = {

    /**
      * 类和对象
      *
      */

    val student = new Student(1, "张三")


    println(student._name)
    println(student.getId())

    println(student)

    System.out.println(student)


    val lisi = new Student(2, "李四", 24)

    println(lisi)


  }
}

/**
  * 类中可以定义属性，方法，构造函数
  *
  *
  * scala 的类有一个默认构造函数，默认构造函数可以有参数
  *
  */

class Student(id: Int, name: String) {
  println("默认构造函数")

  //定义属性并赋值
  //private 属性私有化
  private val _id: Int = id

   val _name: String = name


  // 下划线  占位符，没有实际意义，只是起到占位置的功能
  var _age: Int = _

  //定义方法
  def getId(): Int = {
    return _id
  }

  //省略
  //def getId: Int = _id


  //override 方法重写
  override def toString: String = {
    "Student(" + _id + "," + _name + "," + _age + ")"
  }


  /**
    * 重载构造函数
    *
    * 再重载构造函数的第一行需要显示调用默认构造函数
    *
    */

  def this(id: Int, name: String, age: Int) {
    //调用默认构造函数
    this(id, name)

    //给属性赋值
    this._age = age

  }

}
